//package com.erlinyou.im.web.controller.push;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.OutputStream;
//import java.net.HttpURLConnection;
//import java.net.URL;
//import java.net.URLEncoder;
//import java.text.MessageFormat;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import org.apache.commons.collections.CollectionUtils;
//import org.apache.commons.io.IOUtils;
//import org.apache.commons.lang.StringUtils;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.erlinyou.im.web.controller.chat.ChatMessageController;
//
///**
// * 	华为推送
// * @author xujie
// *
// */
//public class HUAWEIPush {
//	
//	private static Logger log = LoggerFactory.getLogger(ChatMessageController.class);
//	
//	private static String accessToken = "";
//	
//	private final static String tokenUrl = "https://login.cloud.huawei.com/oauth2/v2/token";
//	
//	private static long tokenExpiredTime = 0L;
//	
//	private final static String apiUrl = "https://push-api.cloud.huawei.com/v1/10523134/messages:send";
//	
//	private final static String huaweiAppSecretKey = "7de63aeac57a86eb4b73ebd4d90591d0";
//	
//	private final static String huaweiAppId = "10523134";
//	
//	private final static String huaweiPackageName = "com.erlinyou.worldlist";
//	
//	/**
//	 * 刷新token
//	 */
//	public static void refreshToken() throws Exception {
//	    String msgBody = MessageFormat.format(
//	            "grant_type=client_credentials&client_secret={0}&client_id={1}",
//	            URLEncoder.encode(huaweiAppSecretKey, "UTF-8"), huaweiAppId);
//	    String response = httpPost(tokenUrl, msgBody, 5000, 5000);
//	    JSONObject obj = JSONObject.parseObject(response);
//	    accessToken = obj.getString("access_token");
//	    tokenExpiredTime = System.currentTimeMillis() + (obj.getLong("expires_in") - 5 * 60) * 1000;
//
//	}
//	/*
//	public static void main(String[] args) {
//		try {
//			refreshToken();
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}*/
//	public static void main(String[] args) {
//		try {
//			List<String> tokens = new ArrayList<String>();
//			tokens.add("0869158024653749300003656100CN01");
//			System.out.println(huaweiBatchPush(tokens, "测试标题", "测试内容", new HashMap<String,String>()));
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//	}
//	
//	/**
//	 * 华为推送
//	 *
//	 * @param deviceTokens 从数据库查出来的设备tokens
//	 * @param title
//	 * @param message
//	 */
//	public static boolean huaweiBatchPush(List<String> deviceTokens, String title, String message, Map<String,String> parm) {
//	    log.info("华为设备：{}",deviceTokens);
//	    try {
//	        if (tokenExpiredTime <= System.currentTimeMillis()) {
//	            refreshToken();
//	        }
//	        if (!CollectionUtils.isEmpty(deviceTokens)) {
//	            JSONArray array = new JSONArray();
//	            array.addAll(deviceTokens);
//
//	            //仅通知栏消息需要设置标题和内容，透传消息key和value为用户自定义
//	            JSONObject body = new JSONObject();
//	            body.put("title", title);
//	            body.put("content", message);
//	            JSONObject param = new JSONObject();
//	            //定义需要打开的appPkgName
//	            param.put("appPkgName", huaweiPackageName);
//	            //param.put("intent","#Intent;compo=com.rvr/.Activity;S.W=U;end");
//	            JSONObject action = new JSONObject();
//	            //类型3为打开APP，其他行为请参考接口文档设置，默认值
//	            action.put("type", 3);
//	            //消息点击动作参数
//	            action.put("param", param);
//	            JSONObject msg = new JSONObject();
//	            //3: 通知栏消息，异步透传消息请根据接口文档设置
//	            msg.put("type", 3);
//	            //消息点击动作
//	            msg.put("action", action);
//	            //通知栏消息body内容示例代码
//	            msg.put("body", body);
//	            List<Map<String,String>> cust = new ArrayList<>(1);
//	            //cust.add(parm);
//	            //华为PUSH消息总结构体
//	            JSONObject hps = new JSONObject();
//	            hps.put("msg", msg);
//	            // 华为自定义消息推送 ， ext中 customize必须为list模式
//	            JSONObject ext = new JSONObject();
//	            ext.put("biTag", "Trump");
//	            //ext.put("customize", cust);
//	            hps.put("ext", ext);
//	            JSONObject payload = new JSONObject();
//	            payload.put("hps", hps);
//
//	            String postBody = MessageFormat.format(
//	                    "access_token={0}&nsp_svc={1}&nsp_ts={2}&device_token_list={3}&payload={4}",
//	                    URLEncoder.encode(accessToken, "UTF-8"),
//	                    URLEncoder.encode("openpush.message.api.send", "UTF-8"),
//	                    URLEncoder.encode(String.valueOf(System.currentTimeMillis() / 1000), "UTF-8"),
//	                    URLEncoder.encode(array.toString(), "UTF-8"),
//	                    URLEncoder.encode(payload.toString(), "UTF-8"));
//	            String postUrl = apiUrl + "?nsp_ctx=" + URLEncoder.encode("{\"ver\":\"1\", \"appId\":\"" + huaweiAppId + "\"}", "UTF-8");
//	            //发送PUSH消息
//	            String result = httpPost(postUrl, postBody, 5000, 5000);
//	            JSONObject parseObject = JSONObject.parseObject(result);
//	            String code = String.valueOf(parseObject.get("code"));
//	            System.out.println(code);
//	            log.debug("++++推送到华为结果为：{}",result);
//	            if (StringUtils.isNotBlank(result)) {
//	                return true;
//	            }
//	        }
//	    } catch (Exception e) {
//	        e.printStackTrace();
//	        log.error("华为推送失败：", e);
//	    }
//	    return false;
//	}
//
//	public static String httpPost(String httpUrl, String data, int connectTimeout, int readTimeout) throws IOException {
//	    OutputStream outPut = null;
//	    HttpURLConnection urlConnection = null;
//	    InputStream in = null;
//
//	    try {
//	        URL url = new URL(httpUrl);
//	        urlConnection = (HttpURLConnection) url.openConnection();
//	        urlConnection.setRequestMethod("POST");
//	        urlConnection.setDoOutput(true);
//	        urlConnection.setDoInput(true);
//	        urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
//	        urlConnection.setConnectTimeout(connectTimeout);
//	        urlConnection.setReadTimeout(readTimeout);
//	        urlConnection.connect();
//
//	        // POST data
//	        outPut = urlConnection.getOutputStream();
//	        outPut.write(data.getBytes("UTF-8"));
//	        outPut.flush();
//
//	        // read response
//	        if (urlConnection.getResponseCode() < 400) {
//	            in = urlConnection.getInputStream();
//	        } else {
//	            in = urlConnection.getErrorStream();
//	        }
//
//	        List<String> lines = IOUtils.readLines(in, urlConnection.getContentEncoding());
//	        StringBuffer strBuf = new StringBuffer();
//	        for (String line : lines) {
//	            strBuf.append(line);
//	        }
//	        return strBuf.toString();
//	    } finally {
//	        IOUtils.closeQuietly(outPut);
//	        IOUtils.closeQuietly(in);
//	        if (urlConnection != null) {
//	            urlConnection.disconnect();
//	        }
//	    }
//	}
//}
